// Queue ADT header file ... COMP2521
#pragma once

#ifdef __cplusplus
extern "C"
{
#endif
typedef struct node
{
    int data;
    struct node *next;
} NodeT;

typedef struct QueueRep
{
    int length;
    NodeT *head;
    NodeT *tail;
} QueueRep;

typedef struct QueueRep *queue;

queue newQueue();               // set up empty queue
void dropQueue(queue);          // remove unwanted queue
int QueueIsEmpty(queue);        // check whether queue is empty
void QueueEnqueue(queue, int);  // insert an int at end of queue
int QueueDequeue(queue);        // remove int from front of queue

void QueueGetValue(queue,int* data,int* size);


#ifdef __cplusplus
}
#endif